/**
  示例 1:
  输入: 123
  输出: 321
  示例 2:

  输入: -123
  输出: -321
  示例 3:

  输入: 120
  输出: 21
*/

int reverse(int x)
{
  // int 最大值最小值
  int max = 0x7fffffff; // 2^31 − 1 => 0x0111(7),fffffff
  int min = 0x80000000; // −2^31 => 0x1000,0000,0000,...,0000

  // 用 long 类型判断溢出
  long rs = 0;

  // 不断的 x%10 得到【当前】位，然后 x/=10 > 0 为 for循环的条件
# if 0
  for(; x ; rs = rs*10 + x%10, x /= 10);
#else
  while( x > 0 )
  {
    rs = rs*10 + x%10; // 逆序当前位
    x /= 10; // 不断除10减小
  }
#endif

  // 超了最大值低于最小值就返回 0
  return rs>max || rs<min ? 0 : rs;
}
